function w = wg_load_data(folder_path)

    w = struct('name', {}, 'length', {}, 'width', {}, ...
               'polarisation', {}, 'separation', {}, ...
               'scan', {}, 'max', {}, 'power', {}, 'efficiency', {});

    filePattern = fullfile(folder_path, '*_limits.txt');
    limitFiles = dir(filePattern);

    fprintf(1, 'Found %u files\n', length(limitFiles));

    for k = 1:length(limitFiles)

        limitFileName = limitFiles(k).name;
        matrixFileName = [limitFiles(k).name(1:end-11),'.txt'];
        fullLimitFileName = fullfile(folder_path, limitFileName); 
        fullMatrixFileName = fullfile(folder_path, matrixFileName); 

        C = textscan(limitFileName, '%f32 %*1s %f32 %s %s %s', 'delimiter', '_');   
        D = dlmread(fullLimitFileName);
        E = dlmread(fullMatrixFileName);
        
        c4 = char(C{4});
        c5 = char(C{5});

        if length(c4) > 4
            scan_no = str2num(c4(5:end));
            sep = 0;
        else
            scan_no = str2num(c5(5:end));
            sep = str2num(c4(1:end-1));
        end

        w(k).name = matrixFileName;
        w(k).fullName = fullMatrixFileName;
        w(k).length = C{1};
        w(k).width = C{2};
        w(k).polarisation = char(C{3});
        w(k).separation = sep;
        w(k).scan = scan_no;
        w(k).power = D(7); %Pin_from_millivolts(D(7));
        w(k).max = max(max(E));
        %w(k).efficiency = Pout_from_fiftymscounts(w(k).max)/w(k).power;
    end
end